package epucjr.psicopuc.dominio;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;

import org.hibernate.search.annotations.DocumentId;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.annotations.IndexedEmbedded;

@Entity
@Indexed
public class Candidato {

    /************************
     * ATRIBUTOS
     ***********************/
    @Field
    private String nome;
    @Field
    private String idade;
    @Field
    private String sexo;
    private String estadoCivil;
    private String email;
    private String dataDeNascimento;
    @Id
    @DocumentId
    private String rg;
    @Field
    private String cpf;
    @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinColumn
    @IndexedEmbedded(depth = 4)
    private Curriculo curriculo;
    @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    /*@JoinTable(name="CandidatoEndereco", joinColumns = @JoinColumn(name="candidato_fk"),
    inverseJoinColumns = @JoinColumn(name="endereco_fk")
    )*/
    @JoinColumn
    //@PrimaryKeyJoinColumn
    @IndexedEmbedded
    private Endereco endereco;
    private String telefoneResidencial;
    private String telefoneCelular;
    private String telefoneAuxiliar;
    private String candidatoStatus; //ATIVO ~ INATIVO

    /************************
     * CONSTRUTOR
     ***********************/
    public Candidato() {
        this.nome = "";
        this.idade = "";
        this.sexo = "";
        this.estadoCivil = "";
        this.email = "";
        this.dataDeNascimento = "";
        this.endereco = new Endereco();
        this.rg = "";
        this.cpf = "";
        

    }

    public Candidato(String nome, String idade, String sexo,
            String estadoCivil, String email, String dataDeNascimento,
            String rg, String cpf, Curriculo curriculo, Endereco endereco,
            String telefoneResidencial) {
        super();
        this.nome = nome;
        this.idade = idade;
        this.sexo = sexo;
        this.estadoCivil = estadoCivil;
        this.email = email;
        this.dataDeNascimento = dataDeNascimento;
        this.rg = rg;
        this.cpf = cpf;
        this.curriculo = curriculo;
        this.endereco = endereco;
        this.telefoneResidencial = telefoneResidencial;
        
    }

    /************************
     * METODOS
     ***********************/
    /************************
     * GETTERS/SETTERS
     ***********************/
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getIdade() {
        return idade;
    }

    public void setIdade(String idade) {
        this.idade = idade;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public String getRg() {
        return rg;
    }

    public void setRg(String rg) {
        this.rg = rg;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public Curriculo getCurriculo() {
        return curriculo;
    }

    public void setCurriculo(Curriculo curriculo) {
        this.curriculo = curriculo;
    }

    public String getEstadoCivil() {
        return estadoCivil;
    }

    public void setEstadoCivil(String estadoCivil) {
        this.estadoCivil = estadoCivil;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getDataDeNascimento() {
        return dataDeNascimento;
    }

    public void setDataDeNascimento(String dataDeNascimento) {
        this.dataDeNascimento = dataDeNascimento;
    }

    public Endereco getEndereco() {
        return endereco;
    }

    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }

    public String getTelefoneResidencial() {
        return telefoneResidencial;
    }

    public void setTelefoneResidencial(String telefoneResidencial) {
        this.telefoneResidencial = telefoneResidencial;
    }

    public String getTelefoneCelular() {
        return telefoneCelular;
    }

    public void setTelefoneCelular(String telefoneCelular) {
        this.telefoneCelular = telefoneCelular;
    }

    public String getTelefoneAuxiliar() {
        return telefoneAuxiliar;
    }

    public void setTelefoneAuxiliar(String telefoneAuxiliar) {
        this.telefoneAuxiliar = telefoneAuxiliar;
    }

    public String getCandidatoStatus() {
        return candidatoStatus;
    }

    public void setCandidatoStatus(String candidatoStatus) {
        this.candidatoStatus = candidatoStatus;
    }
}
